<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Contracts\Validation\Validator;

class AdController extends Controller
{
    /*显示友情链接列表*/
    public function getIndex() {

    	// 获取数据
    	$date = DB::table('ad') -> get();

    	// 显示视图
        return view('admin/ad/index',['date'=>$date]);
    }

    /*显示添加友情链接页面*/
    public function getAdd() {

    	// 显示视图
    	return view('admin/ad/add');
    }

    /*执行友情链接插入操作*/
    public function postInsert(Request $request) {   	

    		// 表单验证
    		$this -> validate($request,[
    			'adpic' => 'required|image',
    			'adurl' => 'required',
    			'adstatus' => 'required'
    		],[
    			'required' => ':attribute是必需的',
    			'image' => '上传文件需是图片类型(jpeg、png、bmp、gif、 或 svg)'
    		]);

    		// 获取扩展名
    		$ext = $request -> file('adpic') -> getClientOriginalExtension();
    		
    		// 随机文件名
    		$name = rand(1000,9999).date('YmdHis',time()).'.'.$ext;

    		// 获取要插入的数据
    		$date = $request -> only(['adpic','adurl','adstatus']);

    		// 对图片名重新赋值
    		$date['adpic'] = $name;
    		
    		// 执行插入操作
    		$res = DB::table('ad') -> insert($date);

    		// 判断操作结果
    		if($res){
    			$request -> file('adpic') -> move('upload/ad',$name);
    			return redirect('/admin/ad/index') -> with('success','添加链接成功');
    		}else{
    			$request -> flase();
    			return back() -> with('error','添加链接失败');
    		}
    }

    /*执行删除操作*/
    public function getDelete(Request $request) {

    	// 表单验证
    	$this -> validate($request,[
			'id' => 'required'
		],[
			'required' => 'id是必需的'
		]);

    	// 获取要删除的id
    	$id = $request -> input('id');

    	// 执行删除操作
    	$res = DB::table('ad') -> where('adid','=',$id) -> delete();

    	// 判断删除结果
    	if($res >0){
    		return redirect('admin/ad/index') -> with('success','删除成功');
    	}else{
    		$request -> flash();
    		return back() -> with('error','删除失败');
    	}
    }

    /*显示修改页面*/
    public function getEdit(Request $request) {

    	// 表单验证
    	$this -> validate($request,[
			'id' => 'required'
		],[
			'required' => 'id是必需的'
		]);


    	// 获得要修改的数据的id
    	$id = $request -> input('id');

    	// 给date赋初值
    	$date = [];

    	// 获取要修改是数据
    	$date = DB::table('ad') -> where('adid','=',$id) -> first();
    	return view('admin/ad/edit',['date'=>$date]);
    }

    /*执行修改操作*/
    public function postUpdate(Request $request) {

    	
    	// 获取要更新的id
    	$id = $request -> input('adid');

    	// 获取要更新的数据
    	$date = $request -> only(['adurl','adstatus']);

    	// 上传文件操作
    	if($request -> hasFile('adpic')){
    		// 获取扩展名
    		$ext = $request -> file('adpic') -> getClientOriginalExtension();
    		// 随机文件名
    		$name = rand(1000,9999).date('YmdHis',time()).'.'.$ext;
    		// 给更新数据赋值
    		$date['adpic'] = $name;
    		// 移动文件
    		$request -> file('adpic') -> move('upload/ad',$ext);
    	}

    	// 向数据库中插入数据
    	$res = DB::table('ad') -> where('adid','=',$id) -> update($date);

    	// 判断数据库操作结果
    	if($res > 0){
    		return redirect('admin/ad/index') -> with('success','修改连接成功');
    	}else{
    		return back() -> with('error','修改连接失败');
    	}    	
    }

    /*上线操作*/
    public function getUp(Request $request) {

    	// 表单验证
    	$this -> validate($request,[
			'id' => 'required'
		],[
			'required' => 'id是必需的'
		]);


    	// 获取上线的连接id
    	$id = $request -> input('id');
    	// 更新数据库
    	$res = DB::table('ad') -> where('adid','=',$id) -> update(['adstatus' => 1]);
    	// 判断更新结果
    	if($res > 0){
    		return redirect('/admin/ad/index') -> with('success','上线成功');
    	}else{
    		return redirect('/admin/ad/index') -> with('error','上线失败');
    	}
    }
    
    /*下线操作*/
    public function getDown(Request $request) {

    	// 表单验证
    	$this -> validate($request,[
			'id' => 'required'
		],[
			'required' => 'id是必需的'
		]);

    	// 获取下线的连接id
    	$id = $request -> input('id');
    	// 更新数据库
    	$res = DB::table('ad') -> where('adid','=',$id) -> update(['adstatus' => 2]);
    	// 判断更新结果
    	if($res > 0){
    		return redirect('/admin/ad/index') -> with('success','下线成功');
    	}else{
    		return redirect('/admin/ad/index') -> with('error','下线失败');
    	}
    }
    
}
